筆記目錄

Skip to content

常用套件整理 - Visual Studio

TLDR

  • 擴充套件建議以「獨立安裝」取代「同捆包」,避免功能重疊、過時或移除不乾淨的問題。
  • 編輯器字型建議使用 Cascadia Mono,在高解析度螢幕下閱讀體驗更佳。
  • 針對 ASP.NET Core 專案,推薦使用 Serilog 進行結構化日誌紀錄,並搭配 Seq 進行視覺化分析。
  • 依賴注入 (DI) 建議搭配 Scrutor 補足原生 DI 缺乏組件掃描 (Assembly Scanning) 的功能。
  • 反向代理首選 YARP,因其與 .NET 高度整合且效能優異。
  • 壓縮檔案時,若有資安要求(避免暫存檔殘留),應優先使用 System.IO.Compression 或原生套件,而非呼叫外部 7z.exe
  • 商業環境使用 Excel 套件時,請注意 EPPlus 的授權限制,必要時改用 NPOI

Visual Studio 擴充套件建議

在管理 Visual Studio 擴充套件時,建議改為維護獨立清單,而非安裝大型同捆包。

為什麼不建議安裝同捆包

什麼情況下會遇到這個問題:當開發者習慣直接安裝「Productivity Power Tools」或「Web Essentials」等大型同捆包時。

  • 內容不透明:安裝同捆包往往不清楚具體包含了哪些工具,且內容常隨版本變動。
  • 功能重疊與過時:隨著 Visual Studio 更新,許多舊功能已無法使用,或已被 VS 內建功能取代。
  • 移除不乾淨:移除同捆包時,通常不會連帶移除當初安裝的子套件,導致環境殘留不再需要的工具。

推薦擴充套件清單

  • Productivity Power Tools 相關
    • Double-Click Maximize 2022:點擊兩下最大化視窗。
    • Fix Mixed Tabs:偵測並轉換 Tabs 與空格。
    • Middle Click Scroll:使用滑鼠滾輪移動文件。
    • Solution Error Visualizer:在 Solution Explorer 顯示錯誤提示。
  • Dev Essentials 相關
    • File Icons:美化檔案圖示。
    • SVG Viewer:SVG 預覽與最佳化。
    • Editor Enhancements:強化程式碼排序、文字編碼等功能。
    • Markdown Editor v2:編輯器內建 Markdown 支援。
    • Image Optimizer:圖片壓縮。
  • 其他實用工具
    • ResXManager:多國語言開發必備,提供 Excel 表格式管理 .resx 檔。
    • Editor Guidelines:提供程式碼長度補助線(建議設定 80, 100, 120 字元)。
    • VSColorOutput:讓 Output 視窗的 Build 訊息具備顏色區分。

Visual Studio 環境設定優化

字型與顯示設定

什麼情況下會遇到這個問題:在高解析度螢幕下,舊有字型(如 Consolas)閱讀體驗不佳,或出現滑鼠指標亂跑的情況。

  • 字型選擇:推薦使用 Cascadia Mono。它專為程式碼設計,閱讀體驗優於 Consolas。
  • Cascadia Code vs. Mono:建議選擇 Cascadia Mono。因 Cascadia Code 支援連字(如 != 變為 ),容易造成符號判斷混淆,選擇不支援連字的 Mono 版本較為安全。
  • 螢幕顯示:若操作 SQL 檔時發生滑鼠指標異常,可嘗試關閉「為不同像素密度的螢幕最佳化呈現方式」。

編輯器與語言設定

  • 文件索引標籤:建議將位置設為「左」或「右」以增加垂直閱讀空間,並開啟「索引標籤著色」以區分專案。
  • C# 進階設定
    • 開啟「顯示程序行分隔符號」:在方法與屬性間增加白線分隔。
    • 啟用「淡出」設定:提醒多餘的 Using 與變數。
    • 啟用「為重新指派的變數加上底線」:方便追蹤變數狀態。

NuGet 套件選擇與建議

結構化日誌 (Logging)

什麼情況下會遇到這個問題:傳統使用 NLog 紀錄純文字,導致無法有效搜尋與分析 Log 資料時。

  • 建議做法:使用 Serilog.AspNetCore
  • 核心觀念:Serilog 紀錄的是「資料」(Data) 而非「字串」(Text)。例如 Log.Info("User {Id}", id),Serilog 會將 Id 視為可搜尋欄位。
  • 視覺化建議:搭配 Serilog.Sinks.Seq,可將結構化 Log 視覺化,除錯效率遠勝文字檔。

依賴注入 (DI)

什麼情況下會遇到這個問題:在使用 .NET 原生 DI 容器時,發現缺乏組件掃描 (Assembly Scanning) 等進階功能。

  • 建議做法:安裝 Scrutor。它能填補原生 DI 功能較陽春的缺口,實現簡潔的自動註冊。

反向代理 (Reverse Proxy)

什麼情況下會遇到這個問題:在微服務架構中需要選擇高效能的閘道器時。

  • 建議做法:使用 YARP。相比 Ocelot,YARP 與 .NET 高度整合且維護活躍,在核心轉發與負載平衡效能上表現更佳。

壓縮與檔案處理

什麼情況下會遇到這個問題:專案有資料加密或不落地的資安要求,且需要進行檔案壓縮時。

  • 建議做法:避免呼叫外部 7z.exe,改用 System.IO.CompressionDotNetZip
  • 原因分析:呼叫外部執行檔通常涉及將資料寫入暫存檔,若處理失敗未刪除,可能導致機密外洩。原生套件在記憶體中處理相對安全。

Excel 處理

  • 授權提醒EPPlus 5 以後改為非商業授權,商業環境建議改用 NPOI

異動歷程

  • 2022-11-10 初版文件建立。
  • 2025-04-06
    • 增加「自動更新延伸模組」設定說明。
    • 移除「Code Cleanup on Save」,Visual Studio 2022 已經內建很久,不用特別列出來。
    • 更新部分套件的說明。
  • 2025-12-31
    • 移除過時以及需商用授權的套件。
    • 更新 Visual Studio 設定建議,推薦改用 Cascadia 系列字型。
    • 新增 YARP、Scrutor 與 MQTTnet 等套件。